1. Field of the Invention
The present invention generally relates to Programmable Logic Devices (PLDs) having an array of Logic Array Blocks, each including a plurality of logic elements, and more particularly, to a PLD having redundancy with logic element granularity.
2. Description of Related Art
A Programmable Logic Device (PLD) is a semiconductor integrated circuit that contains fixed logic circuitry that can be programmed to perform a host of logic functions. In the semiconductor industry, PLDs are becoming increasingly popular for a number of reasons. Due to the advances of chip manufacturing technology, application specific integrated circuits (ASICs) designs have become incredibly complex. This complexity not only adds to design costs, but also the duration of time needed to develop an application specific design. To compound this problem, product life cycles are shrinking rapidly. As a result, it is often not feasible for original equipment manufacturers (OEMs) to design and use ASICs. OEMs are therefore relying more and more on PLDs. The same advances in fabrication technology have also resulted in PLDs with improved density and speed performance. Sophisticated programming software enables complex logic functions to be rapidly developed for PLDs. Furthermore, logic designs generally can also be easily migrated from one generation of PLDs to the next, further reducing product development times. The closing of the price-performance gap with ASICs and reduced product development times makes the use of PLDs compelling for many OEMs.
Most PLDs have a chip architecture including a two-dimensional array of logic blocks. Row and column inter-logic block lines, typically of varying length and speed, provide signal and clock interconnects between the blocks of logic in the array. The blocks of logic are often referred to by various names, for example as Logic Array Blocks or LABs by the Altera Corporation, assignee of the present application, or Configurable Logic Blocks (CLBs), as used by Xilinx Corporation. In the Altera architectures, the LABs are further broken into a plurality of individual logic elements referred to as Logic Elements (LEs) or Adaptive Logic Modules (ALMs). With the Xilinx architecture, the CLBs also include a group of logic elements called Logic Cells or (LCs). The LEs, LCs, or ALMS each typically include such elements as look up tables (LUTs), registers for generating registered outputs, adders and other circuitry to implement various logic and arithmetic functions. For the sake of simplicity, any block of logic containing multiple LEs, LCs or ALMs, regardless if organized into a LAB or CLBs, is hereafter generically referred to as a “LABs”. In no way should the term “LAB” be construed as limiting the present invention to a particular PLD architecture and is intended to cover any PLD architecture that uses any type of logic elements grouped together in a block.
PLD interconnects includes at least two levels: (i) inter-LAB lines that provide the routing between LABs; and (ii) an intra-LAB lines that provide routing within the LABs. For a detailed explanation of a two level interconnect hierarchy for a PLD, see U.S. Pat. No. 6,970,014, incorporated herein for all purposes.
PLDs having redundancy can help improve production yields by providing redundant circuitry that can be used in place of defective circuitry on the device. In a row based redundancy scheme for example, at least one spare row of logic is provided for a designated region of logic. In the event a defect is detected in one of the rows of the region, the programming data used to configure the PLD with the user's design is altered to bypass the defective row. In other words, each subsequent row after the defect replaces the row below it, and the last logic row is shifted to the redundant row. In this manner, the defective row is bypassed and replaced with the redundant row. For examples of redundancy for PLDs, see U.S. Pat. Nos. 6,201,404, 6,344,755, 6,965,249 and 7,180,324, each assigned to the assignee of the present application and each incorporated herein by reference for all purposes.
There are several issues associated with using redundancy on a PLD. One issue is the added cost of adding the redundant logic, which occupies space on the die, but is not available for implementing the user's circuit design. For example, consider a PLD divided into five regions, each including twenty rows. To implement redundancy, each region is required to dedicate at least one redundant row. Therefore, of the one hundred rows in the device, five are spare rows needed to implement redundancy. In this example, implementing redundancy represents a five percent (5%) penalty. A second issue involves connectivity. In order to insure that each row can act as a replacement for the adjacent row, it is necessary to include extra routing switches that are not visible to the user, so that each row can access signals that are both visible to the user and signals that would only be required when implementing row shifting for redundancy. Further, the extra routing switches need to extend beyond the nominal length of the wire by the amount of the physical shift used by the redundancy scheme.
Current redundancy schemes have a row granularity of one LAB. In other words, each logic region includes an extra row of LABs for redundancy. Since each LAB row includes a relatively large number of logic elements and other circuitry, a redundancy scheme having a row granularity of a LAB represents a fairly significant penalty with regard to the overall amount of logic available on the chip. Row granularity of one LAB also creates an interconnect issue. Extending the length of inter-LAB lines by one LAB also creates propagation delays, particularly when staggered inter-LAB lines are used.
A PLD with redundancy having logic element row granularity within each logic region is therefore needed.